<%--
    Document   : users
    Created on : 15.05.2011, 14:17:12
    Author     : 647_2
--%>

<%@page import="Access.UserGroupsRemote"%>
<%@page import="Entities.UserGroup"%>
<%@page import="Access.UsersRemote"%>
<%@page import="ExtEntities.VeryExtUser"%>
<%@page import="Entities.User"%>
<%@page import="ExtEntities.ExtAlbum"%>
<%@page import="ExtEntities.VeryExtAlbum"%>
<%@page import="Entities.Genre"%>
<%@page import="Entities.Album"%>
<%@page import="Access.AlbumsRemote"%>
<%@page import="Access.GenresRemote"%>
<%@page import="Access.GroupsRemote"%>
<%@page import="Entities.Group"%>
<%@page import="Access.CompositionsRemote"%>
<%@page import="ExtEntities.VeryExtComposition"%>
<%@page import="java.util.LinkedList"%>
<%@page import="ExtEntities.ExtComposition"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="params.Params"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

        <%
                   int mode = 0;
                   int ID = 0;
                   int _page = 0;
                   String title = "";
                   LinkedList<User> users = new LinkedList<User>();
                   VeryExtUser vuser = new VeryExtUser();
                   int start = 0;

                   if (request.getParameter("mode") != null){
                     mode = Integer.parseInt(request.getParameter("mode"));
                   } else {
                     mode = 0;
                   }

                   InitialContext ic = new InitialContext();
                   CompositionsRemote r = (CompositionsRemote)ic.lookup(CompositionsRemote.class.getName());
                   GroupsRemote gr = (GroupsRemote)ic.lookup(GroupsRemote.class.getName());
                   GenresRemote ge = (GenresRemote)ic.lookup(GenresRemote.class.getName());
                   AlbumsRemote al = (AlbumsRemote)ic.lookup(AlbumsRemote.class.getName());
                   UsersRemote us = (UsersRemote)ic.lookup(UsersRemote.class.getName());
                   UserGroupsRemote ug = (UserGroupsRemote)ic.lookup(UserGroupsRemote.class.getName());

                   switch (mode){
                       case 1: //user group
                           if (request.getParameter("page") != null){
                             _page = Integer.parseInt(request.getParameter("page"));
                           } else {
                             _page = 1;
                           }

                           if (request.getParameter("ID") != null){
                             ID = Integer.parseInt(request.getParameter("ID"));
                           } else {
                             ID = 0;
                           }

                           if (ID == 0){
                               title = "Выберите пользовательскую группу для вывода пользователей";
                           } else {

                             start = (_page - 1) * 10;

                             users = us.getUsersByUserGroup(ID, start, 10);
                             UserGroup ugr = ug.getUserGroup(ID);

                             title = "Список всех пользователей группы " + ugr.get_name() + ", страница " + _page;
                           }
                         break;

                       case 2: //one
                           if (request.getParameter("ID") != null){
                             ID = Integer.parseInt(request.getParameter("ID"));
                           } else {
                             ID = 0;
                           }

                           vuser = us.getFullUser(ID);

                           title = "Подробная информация о пользователе " + vuser.getName();
                         break;

                       case 0: //all
                       default:
                           if (request.getParameter("page") != null){
                             _page = Integer.parseInt(request.getParameter("page"));
                           } else {
                             _page = 1;
                           }

                           start = (_page - 1) * 10;

                           users = us.getAllUsers(start, 10);

                           title = "Список всех пользователей, страница " + _page;
                        break;
                   }

        %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><% out.print(title + " - " + Params.getSiteName()); %></title>
    </head>
    <body>
        <% out.print(Params.getHeader(title)); %>
        <%


               switch (mode){

                   case 2:

                       if (vuser != null){

                       out.println("<a href=\"" + Params.getSiteURL() + "edituser.jsp?mode=2&ID=" + vuser.getID() + "\">[править]</a><br />");
                       out.println("Имя пользователя: " + vuser.getName() + ", ID в базе пользователей: " + vuser.getID() + "<br />");
                       out.println("Группы, в которых состоит пользователь: ");
                       for (int j = 0; j < vuser.getUsergroups().size(); j++){
                               if (j < vuser.getUsergroups().size() - 1){
                                    out.println("<a href=\"" + Params.getSiteURL() + "editusergroup.jsp?mode=2&ID=" + vuser.getUsergroups().get(j).getIDAsInt() + "\">" + vuser.getUsergroups().get(j).get_name() + "</a>, ");
                               } else {
                                    out.println("<a href=\"" + Params.getSiteURL() + "editusergroup.jsp?mode=2&ID=" + vuser.getUsergroups().get(j).getIDAsInt() + "\">" + vuser.getUsergroups().get(j).get_name() + "</a>");
                               }
                       }
                       out.println("<br />Созданные плейлисты: ");
                       for (int j = 0; j < vuser.getCreatedPlaylists().size(); j++){
                               if (j < vuser.getCreatedPlaylists().size() - 1){
                                    out.println("<a href=\"" + Params.getSiteURL() + "playlists.jsp?mode=2&ID=" + vuser.getCreatedPlaylists().get(j).getIDAsInt() + "\">" + vuser.getCreatedPlaylists().get(j).get_title() + "</a>, ");
                               } else {
                                    out.println("<a href=\"" + Params.getSiteURL() + "playlists.jsp?mode=2&ID=" + vuser.getCreatedPlaylists().get(j).getIDAsInt() + "\">" + vuser.getCreatedPlaylists().get(j).get_title() + "</a>");
                               }
                       }
                       out.println("<br />Плейлисты для прослушивания: ");
                       for (int j = 0; j < vuser.getPlaylists().size(); j++){
                               if (j < vuser.getPlaylists().size() - 1){
                                    out.println("<a href=\"" + Params.getSiteURL() + "playlists.jsp?mode=2&ID=" + vuser.getPlaylists().get(j).getIDAsInt() + "\">" + vuser.getPlaylists().get(j).get_title() + "</a>, ");
                               } else {
                                    out.println("<a href=\"" + Params.getSiteURL() + "playlists.jsp?mode=2&ID=" + vuser.getPlaylists().get(j).getIDAsInt() + "\">" + vuser.getPlaylists().get(j).get_title() + "</a>");
                               }
                       }

                       } else {
                          out.println("Данный альбом не найден в базе");
                       }
                     break;
                   case 0:
                   case 1:
                   default:
                       out.println("Показать: <a href=\"" + Params.getSiteURL() + "users.jsp?mode=0&ID=0&page=1\">[все]</a> <a href=\"" + Params.getSiteURL() + "users.jsp?mode=1&ID=0&page=1\">[по пользовательской группе]</a>");
                       out.println("<a href=\"" + Params.getSiteURL() + "edituser.jsp?mode=0\">[добавить нового пользователя]</a><br />");

                       if (mode == 1){
                             LinkedList<UserGroup> groups = ug.getAllUserGroups();
                             out.println("<form action=\"" + Params.getSiteURL() + "users.jsp\" method=\"GET\">");
                             out.print("Выберите группу: <select name=\"ID\">");

                             for (int i = 0; i < groups.size(); i++){
                                   out.print("<option value=\"" + groups.get(i).getIDAsInt() + "\">" + groups.get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Показать\"/>");
                             out.println("<input type=\"hidden\" name=\"mode\" value=\"1\"/>");
                             out.println("<input type=\"hidden\" name=\"page\" value=\"1\"/>");
                             out.println("</form>");
                       }


                       if (users != null){

                       out.println("<table><tr><td><b>ID</b></td><td><b>Имя пользователя</b></td></tr>");
                       for (int i = 0; i < users.size(); i++){
                           out.println("<tr><td><a href=\"" + Params.getSiteURL() + "users.jsp?mode=2&ID=" + users.get(i).getIDAsInt() + "\">" + users.get(i).getIDAsInt() + "</a></td><td><a href=\"" + Params.getSiteURL() + "users.jsp?mode=2&ID=" + users.get(i).getIDAsInt() + "\">" + users.get(i).get_login() + "</a></td></tr>");
                       }
                       out.println("</table>");

                       LinkedList<User> tempus = us.getAllUsers();

                       int pages = tempus.size() / 10;
                       if ((tempus.size() % 10) > 0){pages++;}

                       for (int i = 1; i <= pages; i++){
                          if (_page == i){
                              out.print("<b>[" + i + "]</b> ");
                          } else {
                              out.print("<a href=\"" + Params.getSiteURL() + "users.jsp?mode=" + mode + "&page=" + i + "&ID=" + ID + "\">[" + i + "]</a> ");
                          }
                       }

                       } else {
                          out.println("Ничего не найдено");
                       }
               }
        %>
        <% out.print(Params.getFooter()); %>
    </body>
</html>
